/**
 * 旧的表单数据和新编辑的表单数据作比较，是不是有数据更新
 * @param original 旧表单数据
 * @param edited 新的表单数据
 * @author 赵京涛
 */
export const useExitOldFormDataCompare = (original, edited) => {
  // 来获取修改的字段和值，并保存到 Map 对象中
  return Object.entries(original).reduce((map, [key, value]) => {
    if (edited[key] !== value) {
      map.set(key, edited[key])
    }
    return map
  }, new Map())
}

/**
 * 检测小数点后有几位
 * @param num
 * @returns {number}
 * @author 赵京涛
 */
export const useCountDecimalPlaces = (num) => {
  const parts = num.toString().split('.')
  if (parts.length === 1) {
    // 如果没有小数点，返回0
    return 0
  }
  return parts[1].length
}

/**
 * 去除对象属性中参数为空的属性
 * @author 赵京涛
 * @param obj 原始对象
 */
export const filterEmpty = (obj) => {
  if (typeof obj !== 'object' || obj === null) {
    // 如果不是对象或为空，则直接返回
    return obj
  }
  if (Array.isArray(obj)) {
    // 过滤数组中的空值和null，并递归过滤嵌套的对象
    return obj.filter(item => item !== '' && item !== null).map(item => filterEmpty(item))
  }
  const result = {}
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      const value = obj[key]
      if (value !== '' && value !== null && value !== undefined) {
        // 递归过滤嵌套的对象
        const filteredValue = filterEmpty(value)
        if (filteredValue !== null && (Array.isArray(filteredValue) ? filteredValue.length > 0 : true)) {
          result[key] = filteredValue
        }
      }
    }
  }
  return result
}
